struct A {
    a: i32,
}

impl A {
    fn one(&mut self) -> &i32 {
        &self.a
    }
    fn two(&mut self) -> &i32 {
        loop {
            let k = self.one();

            return k;
            // if *k > 10i32 {
            //     return k;
            // }
        }
    }
}

#[test]
fn recursive_test() {
    let mut a = A { a: 1 };
    let ret = a.two();
    assert_eq!(1, *ret);
    println!("ret =  {:?}", ret);
}
